In [1]:
!pip install ipyvizzu
!pip install ipyvizzu-story
Requirement already satisfied: ipyvizzu in c:\users\vp\anaconda3\lib\site-packages (0.12.1)
Requirement already satisfied: pandas in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (1.4.2)
Requirement already satisfied: IPython in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (8.2.0)
Requirement already satisfied: jsonschema in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu) (4.4.0)
Requirement already satisfied: setuptools>=18.5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (61.2.0)
Requirement already satisfied: matplotlib-inline in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.1.2)
Requirement already satisfied: stack-data in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.2.0)
Requirement already satisfied: pygments>=2.4.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (2.11.2)
Requirement already satisfied: backcall in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.2.0)
Requirement already satisfied: pickleshare in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.7.5)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (3.0.20)
Requirement already satisfied: decorator in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (5.1.1)
Requirement already satisfied: traitlets>=5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (5.1.1)
Requirement already satisfied: jedi>=0.16 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.18.1)
Requirement already satisfied: colorama in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu) (0.4.4)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\vp\anaconda3\lib\site-packages (from jedi>=0.16->IPython->ipyvizzu) (0.8.3)
Requirement already satisfied: wcwidth in c:\users\vp\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython->ipyvizzu) (0.2.5)
Requirement already satisfied: attrs>=17.4.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu) (21.4.0)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu) (0.18.0)
Requirement already satisfied: numpy>=1.18.5 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (1.21.5)
Requirement already satisfied: pytz>=2020.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (2021.3)
Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu) (2.8.2)
Requirement already satisfied: six>=1.5 in c:\users\vp\anaconda3\lib\site-packages (from python-dateutil>=2.8.1->pandas->ipyvizzu) (1.16.0)
Requirement already satisfied: pure-eval in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (0.2.2)
Requirement already satisfied: asttokens in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (2.0.5)
Requirement already satisfied: executing in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu) (0.8.3)
Requirement already satisfied: ipyvizzu-story in c:\users\vp\anaconda3\lib\site-packages (0.4.1)
Requirement already satisfied: ipyvizzu in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu-story) (0.12.1)
Requirement already satisfied: jsonschema in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (4.4.0)
Requirement already satisfied: IPython in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (8.2.0)
Requirement already satisfied: pandas in c:\users\vp\anaconda3\lib\site-packages (from ipyvizzu->ipyvizzu-story) (1.4.2)
Requirement already satisfied: pygments>=2.4.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (2.11.2)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (3.0.20)
Requirement already satisfied: traitlets>=5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (5.1.1)
Requirement already satisfied: decorator in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (5.1.1)
Requirement already satisfied: matplotlib-inline in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.1.2)
Requirement already satisfied: pickleshare in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.7.5)
Requirement already satisfied: setuptools>=18.5 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (61.2.0)
Requirement already satisfied: jedi>=0.16 in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.18.1)
Requirement already satisfied: stack-data in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.2.0)
Requirement already satisfied: colorama in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.4.4)
Requirement already satisfied: backcall in c:\users\vp\anaconda3\lib\site-packages (from IPython->ipyvizzu->ipyvizzu-story) (0.2.0)
Requirement already satisfied: parso<0.9.0,>=0.8.0 in c:\users\vp\anaconda3\lib\site-packages (from jedi>=0.16->IPython->ipyvizzu->ipyvizzu-story) (0.8.3)
Requirement already satisfied: wcwidth in c:\users\vp\anaconda3\lib\site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->IPython->ipyvizzu->ipyvizzu-story) (0.2.5)
Requirement already satisfied: attrs>=17.4.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu->ipyvizzu-story) (21.4.0)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in c:\users\vp\anaconda3\lib\site-packages (from jsonschema->ipyvizzu->ipyvizzu-story) (0.18.0)
Requirement already satisfied: python-dateutil>=2.8.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (2.8.2)
Requirement already satisfied: pytz>=2020.1 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (2021.3)
Requirement already satisfied: numpy>=1.18.5 in c:\users\vp\anaconda3\lib\site-packages (from pandas->ipyvizzu->ipyvizzu-story) (1.21.5)
Requirement already satisfied: six>=1.5 in c:\users\vp\anaconda3\lib\site-packages (from python-dateutil>=2.8.1->pandas->ipyvizzu->ipyvizzu-story) (1.16.0)
Requirement already satisfied: asttokens in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (2.0.5)
Requirement already satisfied: pure-eval in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (0.2.2)
Requirement already satisfied: executing in c:\users\vp\anaconda3\lib\site-packages (from stack-data->IPython->ipyvizzu->ipyvizzu-story) (0.8.3)
In [2]:
import pandas as pd

from ipyvizzu import Data, Config, Style
from ipyvizzustory import Story, Slide, Step


data = Data()
df = pd.read_csv("https://raw.githubusercontent.com/vizzuhq/vizzu-workshops/main/2022-11-11-PyData-NYC/data/trump_2020_05.csv")
data.add_data_frame(df)

style = Style(
    {
        "tooltip":{"fontSize":"22px"},
        "title": {"paddingTop":"1.2em","fontSize":"2.5em"},
        "legend": {"label":{"fontSize":"1.8em"},"width":"16em" },
        "logo":{"width":"6em"},
        "plot": {
           # "paddingLeft": "2.5em",
            "marker": {"label": {"fontSize": "1.5em"}},
            "yAxis": {
                "label": {
                    "fontSize": "1.5em",
                 },
                "title": {"color": "#ffffff00"},
                "interlacing": {"color": "#ffffff00"}
            },
            "xAxis": {
                "label": {
                    "fontSize": "1.6em",
                    "paddingTop": "1em",
                },
                "title": {"fontSize": "1.4em", "paddingTop": "2.5em"}
            },
        }
    }
)

story = Story(data=data, style=style)
story.set_feature("tooltip", True)
story.set_size("100%", "400px")

slide0 = Slide(Step(Config({})))
story.add_slide(slide0)

slide1 = Slide(
    Step(
        Data.filter("record.Firsttweet === 'Igen' && record.Dummy === 'Nem'"),
        Config(
            {
                "channels": {
                    "y": {
                        "set": ["tweets"],
                    },
                    "x": {"set": ["Period", "year", "month"]},
                    "color": "Period",
                },
                "title": "Trump started tweeting in May '09",
            }
        ),
    )
)
story.add_slide(slide1)


slide2 = Slide(
    Step(
        Data.filter(
            "record.Period === 'New to Twitter' && record.Dummy === 'Nem'"),
        Config(
            {
                "title": "In the first two years he wasn't very active",
            }
        ),
    )
)
story.add_slide(slide2)

slide3 = Slide(
    Step(
        Data.filter(
            "(record.Period === 'New to Twitter' || record.Period === 'Businessman') && record.Dummy === 'Nem'"),
        Config(
            {
                "title": "Then he got hooked on",
            }
        ),
    )
)

story.add_slide(slide3)

slide4 = Slide(
    Step(
        Data.filter(
            "(record.Period === 'New to Twitter' || record.Period === 'Businessman' || record.Period === 'Nominee') && record.Dummy === 'Nem'"),
        Config(
            {
                "title": "Interesting trend after becoming a presidential nominee",
            }
        ),
    )
)

story.add_slide(slide4)

slide5 = Slide(
    Step(
        Data.filter("record.Dummy === 'Nem'"),
        Config(
            {
                "title": "And after he became President",
            }
        ),
    )
)

story.add_slide(slide5)

slide6 = Slide(
    Step(
        Config(
            {
                "geometry": "area",
                "align": "center"
            }
        ),
    )
)

story.add_slide(slide6)

slide7 = Slide(
    Step(
        Config(
            {
                "title": "All of Trump's tweets until May 2020",
            }
        ),
    )
)
story.add_slide(slide7)

slide8 = Slide(
    Step(
        Config(
            {
                "y": "retweetcount",
                "title": "And the number of times these were retweeted",
            }
        ),
    )
)

story.add_slide(slide8)

slide9 = Slide()
slide9.add_step(Step(
    Config(
        {
                "y": "tweets",
                "title": "Let's focus on the number of tweets for now",
                }
    ),
)),
slide9.add_step(Step(
    Config(
        {
                "x": {"set": ["year", "month"]},
                "color": None,
                }
    )
))

story.add_slide(slide9)

slide10 = Slide(
    Step(
        Config(
            {
                "y": ["tweets", "Type"],
                "color": "Type",
                "title": "Original tweets, retweets & replies sent",
            }
        ),
        Style({
            "plot": {
                "marker": {
                    "colorPalette": "#A0CDEBFF #60C0E6FF #1DA1F3FF "
                }}},
              )
    )
)

story.add_slide(slide10)

slide11 = Slide(
    Step(
        Config(
            {
                "split": True,
                "align": "none"
            }
        ),
        Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}}}})
    )
)

story.add_slide(slide11)

slide12 = Slide(
    Step(
        Config(
            {
                "split": False,
                "align": "stretch",
                "title": "Original tweets, retweets & replies sent (%)",
            }
        ),
        Style({"plot": {"yAxis": {"label": {"color": "#999999ff"}}}})

    )
)

story.add_slide(slide12)

slide13 = Slide()
slide13.add_step(Step(
    Config(
        {
            "align": "center",
            "title": "",
        }
    ),
))
slide13.add_step(Step(
    Config(
        {
            "y": "tweets",
            "color": None,
            "legend": "lightness"
        }
    ),
    Style({
        "plot": {
            "marker": {
                "colorPalette": "null"
            }}},
          )

)
)


story.add_slide(slide13)

slide14 = Slide(
    Step(
        Config(
            {
                "y": ["tweets", "Tool"],
                "color": "Tool",
                "title": "Tools Trump Used to Tweet",
                "legend": "color"
            }
        ),
        Style({
            "plot": {
                "marker": {
                    "colorPalette": "#597696FF #ED2828FF #26EC87FF #29B9BFFF "
                }}},
              )
    )
)

story.add_slide(slide14)

slide15 = Slide(
    Step(
        Config(
            {
                "split": True,
                "align": "none"
            }
        ),
        Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}}}})
    )
)

story.add_slide(slide15)

slide16 = Slide()
slide16.add_step(Step(
    Config(
        {
            "geometry": "rectangle",
        }
    ),
)),

slide16.add_step(Step(
    Config(
        {
            "x": ["tweets", "year", "month"],
            "y": "Tool",
            "geometry": "rectangle",
            "split": False,
            "align": "none",
        }
    ),
    Style({"plot": {"xAxis": {"title": {"color": "#ffffff00"}},
           "yAxis": {"label": {"color": "#999999ff"}}}},
        )

)),

slide16.add_step(Step(
    Config(
        {
            "x": "tweets",
            "label": "tweets",
        }
    ),
))

story.add_slide(slide16)

slide17 = Slide()

slide17.add_step(Step(
    Config(
        {
            "x": ["tweets", "AMPM", "hour12"],
            "label": None,
        }
    ),
)),

slide17.add_step(Step(
    Config(
        {
            "y": ["tweets", "Tool"],
            "x": ["AMPM", "hour12"],
            "align": "max",
        }
    ),
)),

slide17.add_step(Step(
    Config(
        {
            "geometry": "area",
        }
    ),
)),

slide17.add_step(Step(
    Config(
        {
            "coordSystem": "polar",
            "rotate": 180,
            "title":"Time of Day When Trump Tweeted"
        }
    ),
    Style({"plot": {"yAxis": {"label": {"color": "#ffffff00"}},
           "xAxis":{"label":{"fontSize":"2em","paddingBottom":"2.5em","paddingTop":"2.5em","paddingLeft":"2.5em","paddingRight":"2.5em"}}
          }})
)),
story.add_slide(slide17)

slide18 = Slide(
    Step(
        Config(
            {
                "y": ["Businessman", "Tool"],
                "title": "Times Trump Tweeted When Being a Businessman",
            }
        ),
    )
)

story.add_slide(slide18)

slide19 = Slide(
    Step(
        Config(
            {
                "y": ["President", "Tool"],
                "title": "Times Trump Tweeted When Being President",
            }
        ),
    )
)

story.add_slide(slide19)

story.play()
In [3]:
story.export_to_html(filename="TTT.html")

Come join us tomorrow at 9 AM on the 5th floor!¶

We'll build such stories together! It'll be FUN :)¶

Visit https://ipyvizzu.com to learn more!¶

Story: https://bit.ly/TTT-story¶

Notebook: https://bit.ly/TTT-notebook¶

1st slide is intentionally empty